package com.oa.hyperion.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oa.hyperion.entity.Controller;
import com.oa.hyperion.entity.Detail;
import com.oa.hyperion.entity.Outline;
import com.oa.hyperion.entity.Template;
import com.oa.hyperion.vo.DetailVo;
import com.oa.hyperion.vo.OutlineQuery;
import com.oa.hyperion.vo.TemplateUpdateVo;

import java.util.List;

public interface CustomFormService {

    /**
     * @return 获取所有模板的信息
     */
    List<Template> getAllTemplate();

    /**
     * @param templateId 模板ID
     * @return 获取对应模板ID的内容
     */
    Template getTemplate(int templateId);

    /**
     * @return 获取所有基础控件的信息
     */
    List<Controller> getAllController();

    /**
     * @return 获取所有的概要信息
     */
    List<Outline> getAllOutlineByTemplate(int id);

    /**
     * @param template 保存的模板信息
     */
    void saveTemplate(Template template);

    /**
     * @param outlineId 查看的概要ID
     * @return 获取要查看的概要的详细信息
     */
    List<DetailVo> getOutlineDetail(int outlineId);

    /**
     * @param creator 创建人的ID
     * @param details 保存的详细信息
     */
    void saveDetail(int creator, List<Detail> details);

    void updateTemplate(int templateId, TemplateUpdateVo templateUpdateVo);

    void deleteTemplate(Integer templateId);

    Outline getOutline(Integer id);

    void saveOutline(Outline outline);

    Page<Outline> getOutlineByUId(Integer id, OutlineQuery outlineQuery);

    void deleteOutline(Integer id);

    void updateOutline(Integer id);
}
